package client

import (
	. "chess_platform/internal/common"
	"chess_platform/models/client"
)

//[client]公告方面
type NoticeController struct {
	GrantController
}

func (b *NoticeController) URLMapping() {
	b.Mapping("ListActivityNotice", b.ListActivityNotice)
	b.Mapping("ListAgentNotice", b.ListAgentNotice)
	b.Mapping("ListGameNotice", b.ListGameNotice)
}

// @Title 获取公告(系统公告,活动公告)
// @Description 获取公告(系统公告,活动公告)
// @Success 0 {object} []common.Notice  活动公告
// @Failure 399
// @router /list-activity-notice  [post]
func (b *NoticeController) ListActivityNotice() {
	data, err := client.ListActivityNotice()
	if err != nil {
		LogClient.Error(b.DatabaseError(err.Error()))
		return
	}
	//今天是否首次登录
	if b.InitialLoginToday == 1 {
		for _, v := range data {
			if v.ShowNow == 2 {
				v.ShowNow = 1
			}
		}
	}

	b.Res.Data = map[string]interface{}{
		"data": data,
	}
	b.ResponseSuccess()
}

// @Title 获取指定游戏招募代理的公告
// @Description 获取指定游戏招募代理的公告
// @Param   game_id      body   int     true       "游戏id"
// @Success 0 {object} []common.AgentNotice  游戏招募代理公告
// @Failure 399
// @router /list-agent-notice  [post]
func (b *NoticeController) ListAgentNotice() {
	type Params struct {
		GameId int64 `json:"game_id" valid:"Required"`
	}
	var p Params
	if !b.DecodeParams(&p) {
		return
	}
	if !b.ValidParams(&p) {
		return
	}
	data, err := client.ListAgentNotice(p.GameId)
	if err != nil {
		LogClient.Error(b.DatabaseError(err.Error()))
		return
	}
	b.Res.Data = data
	b.ResponseSuccess()
}

// @Title 获取指定游戏活动的公告(传0表示公共游戏公告,在登录时传0)
// @Description 获取指定游戏活动的公告(传0表示公共游戏公告,在登录时传0)
// @Param   game_id      body   int     true       "游戏id,0-表示所有游戏活动公告"
// @Success 0 {object} []common.GameNotice  游戏招募代理公告
// @Failure 399
// @router /list-game-notice  [post]
func (b *NoticeController) ListGameNotice() {
	type Params struct {
		GameId int64 `json:"game_id"`
	}
	var p Params
	if !b.DecodeParams(&p) {
		return
	}
	data, err := client.ListGameNotice(p.GameId)
	if err != nil {
		LogClient.Error(b.DatabaseError(err.Error()))
		return
	}
	b.Res.Data = data
	b.ResponseSuccess()
}
